package com.seu.me.thread.day1.sync004;

/**
 * 业务整体需要使用完整的synchronized，保持业务的原子性。
 *
 * @author liangfeihu
 */
public class DirtyRead {

    private String username = "seu";
    private String password = "123";

    public synchronized void setValue(String username, String password) {
        System.out.println("enter into setValue function:");
        this.username = username;

        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        this.password = password;

        System.out.println("setValue最终结果：username = " + username + " , password = " + password);
    }

    /**
     * synchronized
     */
    public /*synchronized*/ void getValue() {
        System.out.println("enter into getValue function:");
        System.out.println("getValue方法得到：username = " + this.username + " , password = " + this.password);
    }


    public static void main(String[] args) throws Exception {

        final DirtyRead dr = new DirtyRead();

        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                dr.setValue("z3", "456");
            }
        });
        t1.start();

        Thread.sleep(1000);
        dr.getValue();
    }

}
